/*
*
 * Classe pour modifier des constantes dans un terminal :
 * entrer la lettre puis une valeur réelle
 * Exemple:   p547.29
 *            c678000
 * ATTENTION: Ne pas utiliser la librairie Serial et SerialModif dans le même programme
 */


#ifndef serialmodif_h
#define serialmodif_h

#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif

struct Variable
{
  String printName; // nom affiché dans la console
  char varName; // caractère
  float* var;
  struct Variable *next;
};
typedef struct Variable Variable;

class SerialModif
{
private:
  Variable *_root; // racine de la liste chaînée

public: 
  // à mettre dans le setup()
  void begin(long bauds = 9600);

  // printName : Chaine de caractères qui sera affiché avant la valeur
  // varName : caractère qui devra être saisi avant la nouvelle valeur
  // var : pointeur vers la valeur que l'on veut modifier
  void set(String printName, char varName, float *var);
  

  // modifie les variables si l'utilisateur l'a demandé
  // à mettre dans loop()
  void change(); 

  /***** Fonctions d'affichage *****
   *  ATTENTION : n'utiliser qu'une fonction d'affichage dans chaque programme */
  void print(); // affiche toutes les valeurs sur une seule ligne, séparée par des tabulations
  void courbe(); // affiche toutes les valeurs séparée par des ";" pour exporter dans un tableur et créer une courbe



};

#endif


